package com.ruoyi.common.utils;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.ruoyi.common.utils.sign.Md5Utils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.text.ParseException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public class CurrencyUtil {

	private static final Logger logger = LoggerFactory.getLogger(CurrencyUtil.class);
	
	public static String mapToStr(SortedMap<String, String> __l){
    	StringBuffer sb = new StringBuffer();
    	if(__l!=null && __l.size()>0){
    		for (String k : __l.keySet()) {
    			if(sb.length() > 0){
    				sb.append("&");
    			}
    			sb.append(k).append("=").append(__l.get(k));
    		}
    	}
    	return sb.toString();
    }

	public static String mapToStr(Map map){
		StringBuffer sb = new StringBuffer();
		if(map!=null && map.size()>0){
			for (Object k : map.keySet()) {
				if(sb.length() > 0){
					sb.append("&");
				}
				sb.append(k).append("=").append(map.get(k));
			}
		}
		return sb.toString();
	}
	
	public static SortedMap<String, String> requestParams(HttpServletRequest request){
		SortedMap<String, String> sortedMap = new TreeMap<String,String>();
		Enumeration<String> enu=request.getParameterNames();  
		while(enu.hasMoreElements()){  
			String paraName= enu.nextElement();  
			sortedMap.put(paraName, request.getParameter(paraName));
		}  
		return sortedMap;
	}
	
	public static String requestPath(HttpServletRequest request){
		String uri = request.getRequestURI();
		//方法名
		return uri.substring(uri.indexOf("/")+1, uri.length());
	}
	
	public static String getRemoteAddress(HttpServletRequest request) {  
        String ip = request.getHeader("x-forwarded-for");  
        if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {  
            ip = request.getHeader("Proxy-Client-IP");  
        }  
        if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {  
            ip = request.getHeader("WL-Proxy-Client-IP");  
        }  
        if (ip == null || ip.length() == 0 || ip.equalsIgnoreCase("unknown")) {  
            ip = request.getRemoteAddr();  
        }  
        return ip;  
    }
	
	public static String createSign(SortedMap<String, String> smap, String paykey){
        StringBuffer sb = new StringBuffer();
        for(String k : smap.keySet()){
        	String v = smap.get(k);
			if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
				sb.append(k + "=" + v + "&");
			}
        }
        sb.append("key=" + paykey);
        return Md5Utils.hash(sb.toString());
    }

	/**
	 * int转16进制3个字节
	 * @param v
	 * @return
	 */
	public static String intTo316(int v){
		return String.format("%06X", v);
	}


	public static final int getProcessID() {
		RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
		return Integer.valueOf(runtimeMXBean.getName().split("@")[0])
				.intValue();
	}

	public static String runExec(String... cmd) throws Exception{
		Process pro = Runtime.getRuntime().exec(cmd);
		pro.waitFor();
		InputStream in = pro.getInputStream();
		BufferedReader read = new BufferedReader(new InputStreamReader(in));
		return read.readLine();
	}

	public static List<String> getDynamicParams(String str){
		List<String> params = new ArrayList<>();
		Pattern p = Pattern.compile("\\[([^]]*)\\]");
		Matcher m = p.matcher(str);
		while (m.find()){
			String group = m.group(1);
			params.add(group);
		}
		return params;
	}

	public static boolean engineEvalbool(String str) {
		boolean booleanResult = false;
		try{
			ScriptEngineManager manager = new ScriptEngineManager();
			ScriptEngine engine = manager.getEngineByName("js");
			Object result = engine.eval(str);
			if (Boolean.class.getName().equals(result.getClass().getName())) {
				booleanResult = (Boolean) result;
			}
		}catch (Exception e){
			e.printStackTrace();
		}
		return booleanResult;
	}

	/**
	 * 获取json属性值
	 * @param jsonObject
	 * @param key  xx.xxx[1][0].xxxx
	 * @return
	 */
	public static Object readJson(JSONObject jsonObject, String key) {
		try {
			//分隔key
			String[] keys = key.split("\\.");
			Object val = jsonObject;
			for (int i = 0 ; i < keys.length ; i ++) {
				//需要判断是否为集合类型
				List<String> list = getDynamicParams(keys[i]);
				if(list.size() > 0){
					String aKey = keys[i].substring(0, keys[i].indexOf("["));
					for (int j = 0; j < list.size(); j++) {
						int ki = Integer.parseInt(list.get(j));
						if(val.getClass().getName().contains("JSONObject")){
							val = ((JSONObject) val).getJSONArray(aKey).get(ki);
						}else if(val.getClass().getName().contains("JSONArray")){
							val = ((JSONArray) val).get(ki);
						}
					}
				}else {
					val = ((JSONObject) val).get(keys[i]);
				}
				//判断是否为最后一个属性
				if(i == keys.length - 1){
					return val;
				}
			}
		}catch (Exception e){
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 按位判断 1表示true 0表示false
	 * @param flag
	 * @param per
	 * @return
	 */
	public static boolean isAllow(int flag, int per){
		return ((flag&per) == per);
	}


	public static String getDifSet(String mores, String lesss) {
		if (StringUtils.isEmpty(mores)) mores = "";
		if (StringUtils.isEmpty(lesss)) lesss = "";
		String[] more = mores.split(",");
		String[] less = lesss.split(",");
		if (StringUtils.isEmpty(mores)) return lesss;
		if (StringUtils.isEmpty(lesss)) return mores;

		//将多转换为set fid 肯定不是小的
		Set<String> set = new HashSet<String>(Arrays.asList(more));
		for (String p : less) {
			// 如果集合里有相同的就删掉，如果没有就将值添加到集合
			if (set.contains(p)) {
				set.remove(p);
			} else {
				set.add(p);
			}
		}
		return StringUtils.join(set.toArray(), ",");
	}

	public static String getDifSetUnion(String mores, String lesss) {
		if (StringUtils.isEmpty(mores)) mores = "";
		if (StringUtils.isEmpty(lesss)) lesss = "";
		String[] more = mores.split(",");
		String[] less = lesss.split(",");
		if (StringUtils.isEmpty(mores)) return lesss;
		if (StringUtils.isEmpty(lesss)) return mores;

		//将多转换为set fid 肯定不是小的
		Set<String> set = new HashSet<String>(Arrays.asList(more));
		for (String p : less) {
			set.add(p);
		}
		for (String p : more) {
			set.add(p);
		}
		return StringUtils.join(set.toArray(), ",");
	}

	public static List<Long> stringToLongList(String strArr) {
		if (StringUtils.isEmpty(strArr)) return null;
		return Arrays.stream(strArr.split(","))
				.map(s -> Long.parseLong(s.trim()))
				.collect(Collectors.toList());
	}

	public static String remoteExecCmd(String host, String user, String password, String command, String charset){
		StringBuffer sb = new StringBuffer();
		try {
			logger.info("远程调用IP："+host+"，执行指令："+command);
			JSch jsch = new JSch();

//            jsch.setLogger(new MyLogger());

			Session session = jsch.getSession(user, host, 22);
			session.setTimeout(30000);
			session.setPassword(password);
			session.setConfig("StrictHostKeyChecking", "no");
//            session.setConfig("PreferredAuthentications", "publickey,password");
//            session.setConfig("shell", "cmd.exe");
			session.connect();

			ChannelExec channel = (ChannelExec) session.openChannel("exec");
			channel.setCommand(command);

			InputStream in = channel.getInputStream();
			channel.connect();

//            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
//            String line;
//            while ((line = reader.readLine()) != null) {
//                System.out.println(new String(line.getBytes(), charset));
//            }

			byte[] buffer = new byte[65535];
			while (in.read(buffer) != -1) {
				sb.append(new String(buffer, charset));
			}

			channel.disconnect();
			session.disconnect();
		} catch (JSchException | IOException e) {
			e.printStackTrace();
			return "error";
		}
		logger.info("远程调用IP："+host+"，执行结果："+sb.toString());
		return sb.toString();
	}
	public static String remoteExecCmd(String host, String user, String password, String command){
		return remoteExecCmd(host, user, password, command, "GBK");
	}


//	public static String hutoolEncode(String str, String salt){
//		if (StringUtils.isEmpty(str)) return null;
//		AES aes = SecureUtil.aes(salt.getBytes());
//		return aes.encryptHex(str);
//	}
//
//	public static String hutoolDecode(String str, String salt){
//		if (StringUtils.isEmpty(str)) return null;
//		AES aes = SecureUtil.aes(salt.getBytes());
//		return aes.decryptStr(str);
//	}

	public static String create(int scFor) {
		String[] a2 = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
		Random r = new Random();
		String result = "";
		while (result.length() < scFor) {
			int temp = r.nextInt(a2.length);
			result = result + a2[temp];
		}
		return result;
	}

	public static String htmlTotext(String html) {
		Document doc = Jsoup.parse(html);
		Element body = doc.body();
		return body.text();
	}

	public static void main(String[] args) throws ParseException {

//		String a = "<div class=\"record-list J_Content\" id=\"ItemNotice\">\n" +
//				"<div class=\"pai-title\">\n" +
//				"<div class=\"pai-title-line-left\"></div>\n" +
//				"<div class=\"pai-title-text\">煤等户名变更手续</div>\n" +
//				"<div class=\"pai-title-line-right\"></div>\n" +
//				"</div>\n" +
//				"<div already-has=\"has\" class=\"detail-common-text max-width-limit large-max-width-limit\" data-from=\"//detail-ext.taobao.com/json/get_notice_desc_content.do?item_id=719064261920&amp;t_name=OSS-CM/e6a6dfc3-33d7-479f-9002-d2fc1a30113e.notice\" id=\"J_ItemNotice\"><p><span style=\"color: #000000;\"></span></p><p align=\"center\" style=\"margin: 0.0cm 0.0cm 0.0pt;text-align: center;line-height: 23.45pt;\"><strong><span style=\"color: black;font-size: 22.0pt;\"><br/></span></strong></p><p align=\"center\" style=\"margin: 0.0cm 0.0cm 0.0pt;text-align: center;line-height: 23.45pt;\"><strong><span style=\"color: black;font-size: 22.0pt;\">网络司法拍卖须知</span></strong></p><p align=\"center\" style=\"margin: 0.0cm 0.0cm 0.0pt;text-align: center;line-height: 23.45pt;\"><strong><span style=\"color: black;font-size: 22.0pt;\"><br/></span></strong></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;\"><span style=\"color: black;font-size: 16.0pt;\"><span>    </span></span><span style=\"color: black;font-size: 16.0pt;\">广州市越秀区人民法院在</span><span><span style=\"color: red;font-size: 16.0pt;\">淘宝</span></span><span style=\"color: red;font-size: 16.0pt;\">（网站名）</span><span style=\"color: black;font-size: 16.0pt;\">司法拍卖（变卖）平台上（</span><span style=\"color: red;font-size: 16.0pt;\">网址：<span><span>http://sf.taobao.com/020/05</span></span></span><span style=\"color: black;font-size: 16.0pt;\">，户名：广州市越秀区人民法院）进行公开拍卖活动，现就有关的网上拍卖事宜敬告各位竞买人：</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">一、本《拍卖须知》根据《中华人民共和国民事诉讼法》等相关法律规定所制订，竞买人应认真仔细阅读，了解本须知的全部内容。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">二、本次拍卖活动遵循“公开、公平、公正、诚实守信”的原则，拍卖活动具备法律效力。参加本次拍卖活动的当事人和竞买人必须遵守本须知的各项条款，并对自己的行为承担法律责任。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">三、竞买人条件：竞买人应当具备完全民事行为能力，法律、行政法规和司法解释对买受人资格或者条件有特殊规定的，竞买人应当具备规定的资格和条件。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 28.5pt;\"><span style=\"color: black;font-size: 16.0pt;\">如参与竞买人未开设网络平台账户，可委托代理人（具备完全民事行为能力的自然人）进行，但须于竞买开始前与委托代理人一同到本院办理委托手续。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 28.5pt;\"><span style=\"color: black;font-size: 16.0pt;\">竞买成功后，竞买人（法定代表人、其他组织的负责人）须与委托代理人一同到本院办理交接手续。如果买受人本人因客观原因无法到法院签订成交确认书的，买受人应向法院提交经公证的委托书，并由代理人携带经公证的委托书原件、委托人和受托人身份证明原件，到本院签订成交确认书。如委托手续不全，竞买活动认定为委托代理人的个人行为。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 28.5pt;\"><span style=\"color: black;font-size: 16.0pt;\">因不符合条件参加竞买的，竞买人自行承担相应的法律责任。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 28.5pt;\"><span style=\"color: #444444;font-size: 16.0pt;\">四、与本标的物有关人员【案件当事人、担保物权人（质押权人）、优先购买权人等】均可参加竞拍，不参加竞拍的请关注本次拍卖活动的全过程。本标的优先购买权人未参加竞拍，视为放弃优先购买权。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: #444444;font-size: 16.0pt;\">特别提醒：</span><span style=\"color: black;font-size: 16.0pt;\">优先购买权人参加竞买的，应于<strong><span>拍卖开始前五个工作日内</span></strong>向本院提交有效证明，经法院确认后才能以优先购买权人身份参与竞买；逾期不提交的，视为放弃对本标的物享有的优先购买权。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">五、网络司法拍卖不限制竞买人数量。一人参与竞拍，出价不低于起拍价的，拍卖成交。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">六、竞买人应当在参加拍卖前以实名交纳保证金，未交纳的，不得参加竞买。竞拍前竞买人的</span><span><span style=\"color: red;font-size: 16.0pt;\">（支付宝<span>/</span>其他）</span></span><span style=\"color: black;font-size: 16.0pt;\">账户中应有足够的余额支付拍卖保证金。竞买人在对拍卖财产第一次确认出价竞拍前，按网络平台系统提示报名缴纳保证金，系统会自动冻结该笔款项。拍卖成交的，本标的物竞得者（以下称买受人）冻结的保证金将自动转入法院指定账户，其他竞买人的保证金在竞价程序结束后二十四小时内退还或解冻。拍卖未成交的，竞买人交纳的保证金在竞价程序结束后二十四小时内退还或解冻，保证金冻结期间不计利息。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">七、竞价程序结束前<span>5</span>分钟内无人出价的，最后出价即为成交价；有出价的，竞价时间自该出价时点顺延<span>5</span>分钟。竞买人的出价时间以进入网络司法拍卖平台服务系统的时间为准。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">八、本次拍卖是经法定公告期和展示期后才举行的，已根据评估公司调查情况就拍卖财产已知及可能存在的瑕疵作了客观、详尽的说明。拍卖人对拍卖财产所作的说明和提供的图片等，仅供竞买人参考，不构成对拍卖标的物的任何担保及承诺。所以请竞买人在拍卖前必须仔细审查拍卖财产，调查是否存在瑕疵，认真研究查看所竞买拍卖财产的实际情况，并请亲临展示现场，实地看样<strong>。竞买人一旦参加竞买，无论是否实地看样，都视为对拍卖财产完全了解，并接受拍卖财产一切已知和未知的瑕疵，责任自负。</strong></span></p><p><span style=\"color: #000000;\"></span></p><p style=\"line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">九、拍卖成交后，买受人应在拍卖公告中规定的时间内将拍卖成交价余款（扣除保证金后的余款）缴入法院指定账户（户名：广州市越秀区人民法院，</span><span style=\"font-size: 16.0pt;\"><span style=\"color: #000000;\">开户银行：中国农业银行股份有限公司广州五羊新城支行，账户：<span>44031701040019990</span></span><span style=\"color: black;\">）。填写缴款单时请在备注注明本案执行案号</span><span style=\"color: red;\">（<span>2021</span>）粤<span>0104</span>执<span>35698</span>号拍卖。</span></span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: red;font-size: 16.0pt;\">成交后财产交接联系方式：<span>020-83009570</span>（邓法官）。</span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: red;font-size: 16.0pt;\"></span><span style=\"color: black;font-size: 16.0pt;\">本院确认上述款项到账后，将出具相应法律文书并送达相关职能部门，再通知买受人（本人携带身份证原件及复印件）到本院办理有关手续。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">十、特别提醒：拍卖成交后买受人悔拍而逾期未支付拍卖款的，交纳的保证金不予退还，依次用于支付拍卖产生的费用损失、弥补重新拍卖价款低于原拍卖价款的差价、冲抵本案被执行人的债务以及与拍卖财产相关的被执行人的债务。悔拍后重新拍卖的，原买受人不得参加竞买。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 28.5pt;\"><span style=\"color: black;font-size: 16.0pt;\">十一、本次拍卖活动计价货币为人民币，拍卖时的起拍价、成交价均不含买受人在拍卖标的物交割、过户时所发生的全部费用和税费。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 28.5pt;\"><span style=\"color: black;font-size: 16.0pt;\">十二、买受人付款后应及时接收标的物，并办理过户手续，逾期不办理的，买受人应支付由此产生的费用，并承担本标的物可能发生的损毁、灭失等后果。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 28.5pt;\"><span style=\"color: black;font-size: 16.0pt;\">十三、参加竞买的人应当遵守拍卖须知的规定，不得阻挠其他竞买人竞拍，不得操纵、垄断竞拍价格，严禁竞买人恶意串标，上述行为一经发现，将取消其竞买资格，并追究相关的法律责任。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 28.5pt;\"><span style=\"color: black;font-size: 16.0pt;\">十四、根据法律规定，本院有权在竞价程序开始前或竞价程序中，依法暂缓拍卖、中止拍卖或撤销拍卖。网络服务提供者发现系统故障、安全隐患等紧急情况的，可以先行暂缓拍卖。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 28.5pt;\"><span style=\"color: black;font-size: 16.0pt;\">十五、为便于买受人及时收到人民法院拍卖相关的文书，竞买人在拍卖竞价前如实向网络司法拍卖（变卖）平台提供确切的送达地址及联系方式，或者主动与本院联系。如需更改地址，买受人应及时与本院联系确认更改。因提供的送达地址不确切，或未及时告知变更地址，导致法院有关法律文书无法送达的，由竞买人自行承担由此可能产生的法律后果。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;text-indent: 32.0pt;\"><span style=\"color: black;font-size: 16.0pt;\">十六、凡发现拍卖中有违规行为，可如实举报。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;\"><span style=\"color: black;font-size: 16.0pt;\">网络司法拍卖监督电话</span><span style=\"color: #000000;font-size: 16.0pt;\">：<span>020-83009078</span></span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;\"><span style=\"color: black;font-size: 16.0pt;\">本规则其他未尽事宜，请向拍卖人咨询。</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;line-height: 23.45pt;\"><span style=\"color: black;font-size: 16.0pt;\">网络司法拍卖事项联系电话：</span><span style=\"color: #000000;font-size: 16.0pt;\">方小姐：<span>020-83009551</span></span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;\"><span style=\"color: #000000;font-size: 16.0pt;\"> </span></p><p><span style=\"color: #000000;\"></span></p><p align=\"right\" style=\"margin: 0.0cm 0.0cm 0.0pt;text-align: right;\"><span style=\"color: #000000;font-size: 16.0pt;\">广州市越秀区人民法院</span></p><p><span style=\"color: #000000;\"></span></p><p align=\"right\" style=\"margin: 0.0cm 0.0cm 0.0pt;text-align: right;\"><span style=\"color: black;font-size: 16.0pt;\">二〇二三年五月十八日</span></p><p><span style=\"color: #000000;\"></span></p><p style=\"margin: 0.0cm 0.0cm 0.0pt;\"><span style=\"undefinedcolor: #000000;\"> </span></p><p><span style=\"color: #000000;\"></span></p></div>\n" +
//				"</div>";
//
//
//		String htmlText = htmlTotext(a);
//
//		Pattern pattern = Pattern.compile("户名：.*?([\u4e00-\u9fa5]+)");
//		Matcher matcher = pattern.matcher(htmlText);
//
//		System.out.println(matcher.find());
//		if (matcher.find()) {
//			String housename = matcher.group(1);
//			System.out.println(housename);  // 输出“张三”
//		} else {
//			System.out.println("未找到户名");
//		}
//
//
//		System.out.println(htmlText);


		String a ="https://sf-item.taobao.com/sf_item/633277920919.htm," +
				"https://sf-item.taobao.com/sf_item/677974297975.htm," +
				"https://sf-item.taobao.com/sf_item/678125627850.htm," +
				"https://sf-item.taobao.com/sf_item/675022634946.htm," +
				"https://sf-item.taobao.com/sf_item/674640601800.htm," +
				"https://sf-item.taobao.com/sf_item/654584972189.htm," +
				"https://sf-item.taobao.com/sf_item/652395271702.htm," +
				"https://sf-item.taobao.com/sf_item/583003810493.htm," +
				"https://sf-item.taobao.com/sf_item/722104858627.htm";
		System.out.println(a);


	}

}
